package com.assessment.service;

import com.assessment.model.dto.AssessmentRecordDTO;
import com.assessment.model.entity.AssessmentPeriod;
import com.assessment.model.vo.AssessmentResultVO;
import com.assessment.model.vo.AssessmentTaskVO;

import java.util.List;

/**
 * 评测服务接口
 */
public interface AssessmentService {

    /**
     * 获取当前评测周期
     *
     * @return 当前评测周期
     */
    AssessmentPeriod getCurrentPeriod();

    /**
     * 获取教师的评测任务
     *
     * @param teacherId 教师ID
     * @param periodId  周期ID
     * @return 评测任务列表
     */
    List<AssessmentTaskVO> getTeacherTasks(Integer teacherId, Integer periodId);

    /**
     * 获取评测任务详情
     *
     * @param relationId 关系ID
     * @return 评测任务详情
     */
    AssessmentTaskVO getTaskDetail(Integer relationId);

    /**
     * 提交评测记录
     *
     * @param recordDTO 评测记录DTO
     * @param teacherId 教师ID
     * @return 是否成功
     */
    boolean submitAssessment(AssessmentRecordDTO recordDTO, Integer teacherId);

    /**
     * 获取教师的评测结果
     *
     * @param teacherId 教师ID
     * @param periodId  周期ID
     * @return 评测结果
     */
    AssessmentResultVO getTeacherResult(Integer teacherId, Integer periodId);

    /**
     * 获取部门的评测结果
     *
     * @param departmentId 部门ID
     * @param periodId     周期ID
     * @return 评测结果列表
     */
    List<AssessmentResultVO> getDepartmentResults(Integer departmentId, Integer periodId);

    /**
     * 获取部门的评测结果
     *
     * @param periodId 周期ID
     * @return 评测结果列表
     */
    List<AssessmentResultVO> getAllResults(Integer periodId);
}
